﻿using ConfExpert.Forms.Base;
using DevTeam;

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;

namespace ConfExpert.Forms.SatinAlma
{
    public partial class SatirBol : XForm
    {
        string xml;
        public List<int> AyrimIds;
        public SatirBol(List<int> AyrimIds, string xml)
        {
            InitializeComponent();
            this.AyrimIds = AyrimIds;
            this.xml = xml;
        }

        private void SatirBol_Load(object sender, EventArgs e)
        {
            
            gvAyrimlar.Init("GetKstSatirBolAyrimlar", string.Join(",", AyrimIds.ToArray()));
            gvAyrimlar.MakeReadOnly("BrandId", "SezonId", "OrderRef");
            gvArts.Init("GetKstSatirBol", xml);
            gvArts.MakeReadOnly();

            gvArts.FormatAsNumber(1, "Mt", "YuklenenMt", "BolunecekMt");
            gvArts.AddSummary("Mt", "YuklenenMt", "BolunecekMt");
            gvArts.MakeColumnInvisible("idx");

            gvAyrimlar.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;
            gvAyrimlar.OptionsView.EnableAppearanceEvenRow = false;
            gvAyrimlar.RowStyle += gridView1_RowStyle;

            bbiKaydet.Enabled = gvArts.DataTable().Rows.Count > 0;
            foreach (DataRow dr in gvArts.DataTable().Rows)
                bbiKaydet.Enabled &= (dr["ProductId"] != DBNull.Value);

            bbiKaydet.ItemClick += bbiKaydet_ItemClick;
            gvAyrimlar.BestFitColumns();
            gvArts.BestFitColumns();

            gvAyrimlar.FocusedRowHandle = DevExpress.XtraGrid.GridControl.NewItemRowHandle; // gvAyrimlar.LocateByValue("AyrimId", AyrimId);
        }

        void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            if (e.RowHandle > -1)
                if (e.RowHandle == gvAyrimlar.FocusedRowHandle)
                    e.Appearance.BackColor = e.Appearance.BackColor2 = Color.YellowGreen;   //LightGray;
                else
                    e.Appearance.Combine((e.RowHandle & 1) != 0 ? gvAyrimlar.Appearance.EvenRow : gvAyrimlar.Appearance.OddRow);

        }

        void bbiKaydet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvAyrimlar.EndEditing();
            if (gvArts.DataTable().Compute("SUM(BolunecekMt)", "ProductId is null").ToInt() > 0)
            {
                ShowErrorMessage("ProductId bütün satırlarda girilmiş olmalı!");
                return;
            }

            if (gvAyrimlar.FocusedRowHandle != DevExpress.XtraGrid.GridControl.NewItemRowHandle)
            {
                string str = gvArts.Serialize();
                DataRow r = gvAyrimlar.GetFocusedDataRow();
                int BrandId = r["BrandId"].ToInt();
                int SezonId = r["SezonId"].ToInt();
                string OrderRef = r["OrderRef"].ToStr();
                if (BrandId > 0 && SezonId > 0)
                {
                    int res = ExecuteScalar("UpdKstSatirBol", str, BrandId, SezonId, OrderRef).ToInt();

                    if (res > 0)
                        ShowErrorMessage(res.ToString() + " artikel için, sipariş/yükleme metrajından fazla miktar girilmiş. Bu satırları düzelttikten sonra tekrar deneyin.");
                    else
                    {
                        AyrimIds.Clear();
                        AyrimIds.Add(-res);
                        foreach (DataRow rx in gvAyrimlar.DataTable().Rows)
                            AyrimIds.Add(rx["AyrimId"].ToInt());

                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                }
                else
                    ShowErrorMessage("Marka ve Sezon zorunlu alandır.");

            }
            else
                ShowErrorMessage("Bir ayrım seçmeli ya da yeni bir ayrım girmelisiniz.");

        }

    }
}
